Описание
Копирует текущую запись из обновляемого объекта Recordset
в буфер копирования для последующего изменения.
наборЗаписей.Edit
Параметры
наборЗаписей
Представляет открытый обновляемый объект
Recordset, который содержит подлежащую изменению запись.
Замечания
После вызова метода Edit все изменения, внесенные в поля
текущей записи, помещаются в буфер копирования. После того как все необходимые
изменения будут внесены, следует вызвать метод Update для сохранения
изменений.
После вызова метода Edit текущая запись остается
текущей.
Если после изменения записи перейти к следующей записи без вызова
метода Update, то все внесенные изменения будут отменены без
предупреждения. Кроме того, все изменения записи будут потеряны без
предупреждения, если закрыть наборЗаписей или завершить процедуру, в которой
описан объект Recordset, а также родительский объект Database или
Connection.
Вызов метода Edit приводит к возникновению ошибки в
следующих случаях:
1. Отсутствует текущая запись.
2. Объект
Connection, Database или Recordset был открыт только для
чтения.
3. Ни одно из полей записи не является обновляемым.
4. Объект
Database или Recordset был открыт другим пользователем для
монопольного доступа (в рабочей области ядра Microsoft Jet).
5.
Страница, содержащая текущую запись, блокирована другим пользователем (в рабочей
области ядра Microsoft Jet).
Если при работе в сети в рабочей области
ядра Microsoft Jet для свойства LockEdits объекта Recordset
задано значение True (жесткая блокировка), запись блокируется с момента
вызова метода Edit до завершения обновления. При значении False
свойства LockEdits (нежесткая блокировка), запись блокируется и
сравнивается с исходным содержимым записи непосредственно перед обновлением
записи в базе данных. В ситуации, когда запись была изменена другим
пользователем после вызова метода Edit, вызов метода Update
приводит к ошибке выполнения, если метод OpenRecordset был вызван без
указания константы dbSeeChanges. По умолчанию, при подключении к ядру
Microsoft Jet базы данных ODBC и устанавливаемых драйверов
ISAM всегда используют нежесткую блокировку.
В рабочей области
ODBCDirect после изменения (и вызова метода Update для обновления)
ключевого поля записи пользователь не имеет возможности дальнейшего изменения
полей этой записи до закрытия объекта Recordset и последующей загрузки
записи с помощью запроса.
Для добавления, изменения или удаления записи
необходимо существование уникального индекса для этой записи в базовом источнике
данных. В противном случае возникнет ошибка "Разрешение отсутствует" при вызове
метода AddNew, Delete или Edit в рабочей области ядра
Microsoft Jet или ошибка "Недопустимый аргумент" при вызове метода
Update в рабочей области ODBCDirect.
Пример
Следующая программа использует метод Edit для замены текущих
данных, соответствующих указанному имени. Для выполнения этой процедуры
требуется процедура EditName.
Sub EditX()
Dim dbsNorthwind As Database
Dim rstEmployees As Recordset
Dim strOldFirst As String
Dim strOldLast As String
Dim strFirstName As String
Dim strLastName As String
Set dbsNorthwind = OpenDatabase("Борей.mdb")
Set rstEmployees = dbsNorthwind.OpenRecordset("Сотрудники", dbOpenDynaset)
' Сохраняет исходные данные.
strOldFirst = rstEmployees!Имя
strOldLast = rstEmployees!Фамилия
' Принимает новые данные для записи.
strFirstName = Trim(InputBox( "Введите имя:"))
strLastName = Trim(InputBox( "Введите фамилию:"))
' Продолжает выполнение, если данные введены в оба поля.
If strFirstName <> "" and strLastName <> "" Then
' Обновляет запись новыми данными.
EditName rstEmployees, strFirstName, strLastName
With rstEmployees
' Отображает новые и старые данные.
Debug.Print "Старые данные: " & strOldFirst & " " & strOldLast
Debug.Print "Новые данные: " & !Имя & " " & !Фамилия
' Восстанавливает исходные данные, измененные
' только для демонстрации.
.Edit
!Имя = strOldFirst
!Фамилия = strOldLast
.Update
End With
Else
Debug.Print "Необходимо ввести строковое значение для имени и фамилии!"
End If
rstEmployees.Close
dbsNorthwind.Close
End Sub
Sub EditName(rstTemp As Recordset, strFirst As String, strLast As String)
' Вносит изменения в запись и устанавливает закладку,
' чтобы оставить запись текущей.
With rstTemp
.Edit
!Имя = strFirst
!Фамилия = strLast
.Update
.Bookmark = .LastModified
End With
End Sub